package com.silence.gmall.product.controller;

import com.silence.gmall.annotations.Log;
import com.silence.gmall.base.Result;
import com.silence.gmall.base.TableDataInfo;
import com.silence.gmall.product.domain.repository.BaseTrademarkRepository;
import com.silence.gmall.product.dto.BaseTrademarkDto;
import com.silence.gmall.product.service.BaseTrademarkService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author silence
 * @Description 品牌表控制器
 * @Date 2025-08-17 16:28:16
 */
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("/admin/product")
public class TrademarkController {

    /**
     * BaseTrademarkService 的注入
     */
    private final BaseTrademarkService baseTrademarkService;

    /**
     * BaseTrademarkRepository 的注入
     */
    private final BaseTrademarkRepository baseTrademarkRepository;

    /**
     * 获取品牌分页列表
     *
     * @param page 页码
     * @param limit 每页条数
     * @return 品牌分页列表
     */
    @GetMapping("/baseTrademark/{page}/{limit}")
    @Log(interfaceName = "获取品牌分页列表")
    public Result<TableDataInfo<BaseTrademarkDto>> pageBaseTrademark(@PathVariable("page") Long page,
                                                                       @PathVariable("limit") Long limit) {
        return Result.build(baseTrademarkRepository.pageBaseTrademark(page, limit));
    }

    /**
     * 根据Id获取品牌
     *
     * @param id 品牌ID
     * @return 品牌
     */
    @GetMapping("/baseTrademark/get/{id}")
    @Log(interfaceName = "根据Id获取品牌")
    public Result<BaseTrademarkDto> getBaseTrademark(@PathVariable("id") Long id) {
        return Result.build(baseTrademarkRepository.getBaseTrademark(id));
    }

    /**
     * 获取品牌属性
     *
     * @return 品牌集合
     */
    @GetMapping("/baseTrademark/getTrademarkList")
    @Log(interfaceName = "获取品牌属性")
    public Result<List<BaseTrademarkDto>> getTrademarkList() {
        return Result.build(baseTrademarkRepository.getTrademarkList());
    }

    /**
     * 添加品牌
     *
     * @param reqVo 品牌请求VO
     * @return 结果
     */
    @PostMapping("/baseTrademark/save")
    @Log(interfaceName = "添加品牌")
    public Result<Void> saveBaseTrademark(@RequestBody BaseTrademarkDto reqVo) {
        baseTrademarkRepository.saveBaseTrademark(reqVo);
        return Result.build();
    }

    /**
     * 修改品牌
     *
     * @param reqVo 品牌请求VO
     * @return 结果
     */
    @PutMapping("/baseTrademark/update")
    @Log(interfaceName = "修改品牌")
    public Result<Void> updateBaseTrademark(@RequestBody BaseTrademarkDto reqVo) {
        baseTrademarkRepository.updateBaseTrademark(reqVo);
        return Result.build();
    }

    /**
     * 删除品牌
     *
     * @param id 品牌ID
     * @return 结果
     */
    @DeleteMapping("/baseTrademark/remove/{id}")
    @Log(interfaceName = "删除品牌")
    public Result<Void> removeBaseTrademark(@PathVariable("id") Long id) {
        baseTrademarkRepository.removeBaseTrademark(id);
        return Result.build();
    }
}